package com.love.cloud.log.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.love.cloud.common.mybatis.entity.SimpleBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

/**
 * @author hongdongqu
 */
@Data
@Entity
@Table(name = "job_info")
@TableName("job_info")
@EqualsAndHashCode(callSuper = false)
@org.hibernate.annotations.Table(appliesTo = "job_info",comment="redis队列消费信息")
public class JobInfo extends SimpleBaseEntity {

    /**
     * Job的唯一标识。用来检索和删除指定的Job信息
     */
    @Column(columnDefinition = "VARCHAR(60) COMMENT 'Job的唯一标识。用来检索和删除指定的Job信息'")
    private String jobId;


    /**
     * Job类型。可以理解成具体的业务名称
     */
    @Column(columnDefinition = "VARCHAR(60) COMMENT 'Job类型。可以理解成具体的业务名称'")
    private String topic;

    /**
     * Job需要延迟的时间。单位：秒。（服务端会将其转换为绝对时间）
     */
    @Column(columnDefinition = "bigint(20) COMMENT 'Job需要延迟的时间。单位：秒。（服务端会将其转换为绝对时间）'")
    private Long delay=0L;

    /**
     * Job的内容，供消费者做具体的业务处理，以json格式存储
     */
    @Column(columnDefinition = "longtext COMMENT 'Job的内容，供消费者做具体的业务处理，以json格式存储'")
    private String body;

    /**
     * 失败重试次数
     */
    @Column(columnDefinition = "int COMMENT '失败重试次数'")
    private int retry = 0;

    /**
     * 通知URL
     */
    @Column(columnDefinition = "VARCHAR(60) COMMENT '通知URL'")
    private String url;

    /**
     * 状态(1:消费成功,99消费失败)
     */
    @Column(columnDefinition = "int COMMENT '状态(1:消费成功,99消费失败)'")
    private Integer status;
}
